The present invention relates generally to the processing, storing and accessing of information within an information processing system. More particularly, the present invention relates to tracking and storing information about individual transactions for later report generation.
Modern enterprises require the ability to collect detailed information about day to day activity such as changes in inventory, transactions with customers, and number, length and origination location of telephone calls. Any information that would aid in operation of the enterprise or future planning for the enterprise may be collected. Typically, an enterprise such as a mail order retail business or a stock brokerage uses an information processing system that collects specified information, stores it in a database, and allows a user to selectively access and arrange (xe2x80x9cslice and dicexe2x80x9d) and retrieve the data.
One example of a commonly used information processing system is a system that processes transactions between the enterprise and those outside the enterprise. For example, various systems exist for receiving, routing, tracking and recording information about telephone calls to and from the enterprise. Particularly in the case of enterprises that do a significant amount of business by telephone with clients or customers, it is extremely useful to collect accurate information about customer telephone calls that can be easily and completely accessed at a later time and arranged into various report formats. As an example, a stock brokerage that takes orders by telephone would like to collect information about who a customer is, how much money the customer spends per time period, how long an average telephone call takes, how long a customer must wait to speak to an agent, how long an average telephone call lasts, what revenue an agent generates per time period, how many telephone calls an agent handles per time period, and so on.
Existing call processing systems typically receive calls coming into the enterprise and route them to various locations. An attempt is made to collect data about the calls, but data collection and storage capabilities of existing call processing systems have serious limitations. One limitation is the inability of the call processing system to store xe2x80x9ccall dataxe2x80x9d and xe2x80x9cbusiness dataxe2x80x9d related to a single call in one location where it can be easily accessed. This is because conventional call processing systems have limited ability to communicate with a computer terminal operated by a human agent taking a customer call. Typically, when a call is received by the system, the system routes the call to a human agent at a computer terminal, sometimes using information entered by the caller. The routed call is sent to the human agent and, simultaneously, the computer operated by the agent receives data from the system causing the computer to display relevant information to the agent, such as caller identity, caller buying history, etc. The agent conducts a business transaction with the caller, and at the end of the transaction, the agent is typically prompted by the computer to enter some xe2x80x9cbusiness dataxe2x80x9d about the transaction. The business data may include, for example, success, failure, revenue generated, stocks sold, etc. The business data is typically entered as a code or codes in predesignated fields of a record. The business data entered by the agent is typically written to a xe2x80x9clocalxe2x80x9d database, for example, a storage device on the computer that the agent operates. xe2x80x9cCall dataxe2x80x9d, which includes information such as the duration of the call, the origin of the call, etc., is typically stored by the call processing system at the termination of the call connection. The call data is usually stored by the call processing system in a database that is local to the call processing system but remote from the agent""s computer. The call processing system typically stores information about calls to many different agents in different locations.
In such prior call processing systems it is difficult or impossible to later extract coherent information about the entire customer call that includes both the business data and the call data. One of the reasons for this is current limitations in the communication link between the call processing system and the agent""s computer. One prior call processing system uses a computer telephony integration (CTI) link to transmit American Standard Code for Information Interchange (ASCII) messages between the call processing system and an agent computer. Typically, control messages handling the call are sent from the call processing system to the agent computer during the call. These messages may include messages to indicate call connection and termination, or messages that cause a screen pop application to bring up relevant information on the agent""s computer screen when the call is connected. The CTI link may also be used to transmit data from the agent computer to the call processing system during the call. This data may include business data related to the call that is entered by the agent during the call. Usually limited fields exist for the entry of business data by the agent. One serious limitation of the current CTI link is that it is only open when the call is actually connected. Therefore, the call may be disconnected before an agent has time to enter information about the call and transmit the information to the call processing system.
Conventional call processing systems thus have the disadvantage of allowing limited business data to be entered only in a narrow time window. Conventional call processing systems are further subject to error on the part of the agent in entering business data.
In addition to these data collection limitations, conventional call processing systems typically do not store business data and call data together so that it may be easily accessed and associated with the proper call. Most business data is not transmitted from the agent computer to the call processing system, but is stored locally with respect to the agent computer, for example, in a storage device of the agent computer. Although prior systems have limited capability to store some business data and some call data while preserving the relationship of the data to the call, retrieval is usually cumbersome. For example, it is possible to provide for an indirect linkage of stored business data and stored call data for the same call by placing matching information in a predesignated field of a record in the system database (for the call data) and a predesignated field of a record in the database external to the system (for the business data). Retrieval of the data for the single call, however, requires lookups in two databases.
Existing call processing systems have additional disadvantages related to the way in which call data is collected and stored by the system for later analysis. A xe2x80x9ccallxe2x80x9d is typically defined in a limited way that prevents complete records about a call from being collected. For example, in the case of a call that is transferred at least once after being initially received by the system, the call is typically defined as occurring between connection and disconnection, or hang up. This definition is not very accurate or useful, because the call may have included several segments during which different resources were connected, and involved several different agents and several different periods during which a calling customer was required to xe2x80x9choldxe2x80x9d. It would be extremely useful to be able to identify each segment of a call and what happened during each segment in order to in order to better analyze customer needs and agent performance.
Conventional systems lack the capability of identifying every segment of a call as being part of a single call. One prior attempt to identify call segments uses a tracking number in a field of a call record. This method identifies some segments of a call, but not all possible segments of a call. As an example, when a call from a customer is connected to a first agent, a tracking number is assigned to the record created by that connection. If, however, the first agent, during the same call, calls a second agent and then connects the customer to the second agent, the segment between the customer and the second agent receives the same tracking number as the segment between the customer and the first agent, but the segment between the first agent and the second agent receives a different tracking number. Call information collected by this method may be later retrieved and analyzed to produce an inaccurate report. For example, the call duration from the customer""s point of view is recorded as the time actually spent connected to the agents, while the call duration actually experienced by the customer includes the time the customer waited to be connected to the second agent. In systems that include multiple, networked call processing systems, the difficulty in collecting accurate data on all segments of a call is exacerbated. This is partly due to the fact that each call processing system may do independent data marking and storage.
A method and apparatus for universal call identification is described. One embodiment includes a telephone call processing system that includes multiple call distribution systems and an information server. Information regarding calls handled by any of the call distribution systems is collected and stored in an information server. The information server includes software and hardware to identify and store information regarding every segment of a call, even if the call is queued at multiple call distribution systems or transferred several times. One embodiment includes a method in a telephone call processing system for maintaining information about a call. The method includes creating a universal call identification for the call when the call is received in the system. A call includes each of a multiple call segments that occur between a first connection of a caller resource to a call processing system resource and a disconnection of the caller resource from the call processing system. The method also includes creating a record of each of the call segments.